package com.dq.offer;

/**
 * @Author: Dang Qi
 * @Date: 2021/3/15  17:05
 * @Description:
 * 剑指 Offer 46. 把数字翻译成字符串
 * 给定一个数字，我们按照如下规则把它翻译为字符串：0 翻译成 “a” ，1 翻译成 “b”，……，11 翻译成 “l”，……，
 * 25 翻译成 “z”。一个数字可能有多个翻译。
 * 请编程实现一个函数，用来计算一个数字有多少种不同的翻译方法。
 */
public class SwitchNumberToString {
    public static void main(String[] args) {
        Solution solution = new SwitchNumberToString().new Solution();
        int n = 25;
        System.out.println(solution.translateNum(n));
    }
    class Solution {
        public int translateNum(int num) {

            String s = num + "";
            int[] dp = new int[s.length()];
            dp[0] = 1;
            for(int i = 1; i < dp.length; i++){
                dp[i] = dp[i-1];
                if((s.charAt(i-1)!='0' && s.charAt(i-1)<'2') ||
                        (s.charAt(i-1)=='2' && s.charAt(i) <='5'))
                    dp[i] += i-2<0?1:dp[i-2];
            }
            return dp[dp.length-1];
        }
    }
}
